package beans;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.RequestScoped;

import modelo.Usuario;
import dao.PersonaDao;
import dao.UsuarioDao;
import excepciones.DaoException;

@ManagedBean 
@RequestScoped
public class EditUsuarioBean {
	
	@ManagedProperty(value="#{loginBean}")
	private LoginBean loginBean;
	@ManagedProperty(value="#{listPersonasBean}")
	private ListPersonasBean listPersonasBean; // Para actualizar el listado
	private Boolean puedeEditar;
	private Usuario usuario;
	
	@PostConstruct
	public void init(){
		UsuarioDao usrDao = new UsuarioDao();
		try {
			usuario = usrDao.findById(loginBean.getObjUsuario().getId());
			puedeEditar = !esIntegrante();
			usrDao.closeEntityManager();
		} catch (DaoException e) {			
			e.printStackTrace();
		}
		
	}
		
	public String saveUsuario(){
		PersonaDao personaDao = new PersonaDao(getUsuario().getUnaPersona());
		try {
			personaDao.update();
			personaDao.closeEntityManager();
		} catch (DaoException e) {				
			e.printStackTrace();
		}
		PersonaDao todasPersonasDao = new PersonaDao();
		try {
			getListPersonasBean().setPersonas(todasPersonasDao.getTodasLasPersonas());
			todasPersonasDao.closeEntityManager();
		} catch (DaoException e) {
			e.printStackTrace();
		}
		System.out.println("irIndex"
				+ this.getLoginBean().getObjPerfil().getNombre());
		
		return "irIndex" + this.getLoginBean().getObjPerfil().getNombre();
	}
	
	public boolean esIntegrante(){
		for (String unPerfil : usuario.getPerfilesString()) {
			if (unPerfil == "Integrante")
				return true; 
		}
		return false;
	}

	public Usuario getUsuario() {
		return usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public LoginBean getLoginBean() {
		return loginBean;
	}
	public void setLoginBean(LoginBean loginBean) {
		this.loginBean = loginBean;
	}

	public ListPersonasBean getListPersonasBean() {
		return listPersonasBean;
	}

	public void setListPersonasBean(ListPersonasBean listPersonasBean) {
		this.listPersonasBean = listPersonasBean;
	}

	public Boolean getPuedeEditar() {
		return puedeEditar;
	}

	public void setPuedeEditar(Boolean puedeEditar) {
		this.puedeEditar = puedeEditar;
	}
	
}